Lambda のメトリクスを監視する CloudWatch Alarm がアラーム状態にならないときの対処方法
困っていた内容
Lambda の Errorsメトリクス が閾値を超えた場合に CloudWatch Alarm がアラーム状態になるように設定しましたが、
メトリクスにエラーが記録されてもアラーム状態になりません。
アラーム状態になるようにするにはどうしたら良いでしょうか。
どう対応すればいいの?
CloudWatch Alarm の評価期間が Lambda の実行時間より大きくなるように設定してください。
Errorsメトリクス のタイムスタンプには Lambda の開始した時刻が記録されますが、 メトリクスに反映されるタイミングは Lambda の終了時です。 そのため、Lambda の実行時間 > 評価期間 の場合、評価期間内にはまだメトリクスに出力されず、評価期間外になってからメトリクスに出力されるため、 メトリクスには記録があるがアラーム状態にはならないという状況が発生します。
評価期間の変更方法
設定したいアラームの編集画面を開きます。
下へスクロールして、その他の設定を開くと次の画面になります。
評価期間は、期間 x データポイント数 のため、 乗算した値が Lambda の実行時間より大きくなるように変更して、「アラームの更新」をクリックします。
参考資料
AWS Lambda 関数メトリクスの使用 - AWS Lambda
メトリクスのタイムスタンプには、関数が呼び出された時間が反映されます。実行時間によっては、メトリクスが出力される数分前になる場合があります。 たとえば、関数のタイムアウトが 10 分の場合は、正確なメトリクスを得るために過去 10 分以上を確認します。